home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / apidev / nodlst.arc / IPX.H next >
Text File  |  1989-12-15  |  6KB  |  150 lines

  1. /*                                                      */ 
  2. /*    IPX.H -  Header file with structure definitions for IPX/SPX*/ 
  3. /*                                                                      */ 
  4.  
  5. #define MAX_NODES 80 
  6.  
  7. #define TEMPORARY (BYTE)0 
  8. #define PERMANENT (BYTE)0xFF 
  9. #define OKAY 0 
  10.  
  11. typedef unsigned char BYTE; 
  12. typedef unsigned int WORD; 
  13. typedef unsigned long LONG; 
  14.  
  15. typedef struct 
  16.       BYTE  Network[4];  /* high-low */ 
  17.       BYTE  Node[6];     /* high-low */ 
  18.       BYTE  Socket[2];   /* high-low */ 
  19. } IPXAddress; 
  20.  
  21. typedef struct IPXPacketStructure 
  22.       WORD               PacketCheckSum;                /* high-low */ 
  23.       WORD               PacketLength;           /* high-low */ 
  24.       BYTE               PacketTransportControl; 
  25.       BYTE               PacketType; 
  26.       IPXAddress         Destination; 
  27.       IPXAddress         Source; 
  28. } IPXPacket; 
  29.  
  30. typedef struct IPXConfigRequestStructure 
  31.       IPXPacket          IPX; 
  32.       BYTE               ExclusionCount; 
  33.       BYTE               ExclusionAddress[MAX_NODES][6]; 
  34. } IPXConfigRequest; 
  35.  
  36. typedef struct IPXConfigReplyStructure 
  37.       IPXPacket          IPX; 
  38.       BYTE               MajorVersion; 
  39.       BYTE               MinorVersion; 
  40.       WORD               SPXDiagnosticSocket; 
  41.       BYTE               ComponentCount; 
  42.       BYTE               ComponentType[100]; 
  43. } IPXConfigReply; 
  44.  
  45. structECBFragment 
  46.       WORD        Address[2];        /* offset-segment */ 
  47.       WORD        Size;              /* low-high */ 
  48. }; 
  49.  
  50. typedef struct ECBStructure 
  51.       WORD               Link[2];          /* offset-segment */ 
  52.       BYTE               far *ESRAddress;  /* offset-segment */ 
  53.       BYTE               InUseFlag; 
  54.       BYTE               CompletionCode; 
  55.       WORD               ECBSocket;        /* high-low */ 
  56.       BYTE               IPXWorkspace[4];  /* N/A */ 
  57.       BYTE               DriverWorkspace[12];/* N/A */ 
  58.       BYTE               ImmediateAddress[6];/* high-low */ 
  59.       WORD               FragmentCount;          /* low-high */ 
  60.       struct ECBFragment FragmentDescriptor; 
  61. } ECB; 
  62.  
  63. typedef struct SPXPacketStructure 
  64.       WORD               PacketCheckSum;                /* high-low */ 
  65.       WORD               PacketLength;           /* high-low */ 
  66.       BYTE               PacketTransportControl; 
  67.       BYTE               PacketType; 
  68.       IPXAddress         Destination; 
  69.       IPXAddress         Source; 
  70.       BYTE               ConnectionControl; 
  71.       BYTE               DataStreamType; 
  72.       WORD               SourceConnectionID;     /* high-low */ 
  73.       WORD               DestinationConnectionID;/* high-low */ 
  74.       WORD               SequenceNumber;                /* high-low */ 
  75.       WORD               AcknowledgeNumber;      /* high-low */ 
  76.       WORD               AllocationNumber;       /* high-low */ 
  77. } SPXHeader; 
  78.  
  79. typedef struct SPXShellReplyStructure 
  80.       SPXHeader          SPX; 
  81.       BYTE               CompletionCode; 
  82.       LONG               IntervalMarker;                /* low-high */ 
  83.       BYTE               Reserved[4]; 
  84.       BYTE               NodeAddress[6]; 
  85.       BYTE               Reserved2; 
  86.       BYTE               NodeAddressType; 
  87.       WORD               MaxDataSize;            /* low-high */ 
  88.       BYTE               Reserved3[2]; 
  89.       BYTE               LANHardwareID; 
  90.       WORD               TransportTime;                 /* low-high */ 
  91.       BYTE               Reserved4[9]; 
  92.       BYTE               EthernetType[2]; 
  93.       BYTE               MajorVersion; 
  94.       BYTE               MinorVersion; 
  95.       BYTE               MiscFlags; 
  96.       BYTE               SelectedConfiguration; 
  97.       BYTE               LANDescription[80]; 
  98.       WORD               IOAddress1;             /* low-high */ 
  99.       WORD               DecodeRange1a;                 /* low-high */ 
  100.       WORD               IOAddress2;             /* low-high */ 
  101.       WORD               DecodeRange2a;                 /* low-high */ 
  102.       BYTE               MemoryAddress1[3]; 
  103.       WORD               DecodeRange1b;                 /* low-high */ 
  104.       BYTE               MemoryAddress2[3]; 
  105.       WORD               DecodeRange2b;                 /* low-high */ 
  106.       BYTE               InterruptIsUsed1; 
  107.       BYTE               InterruptLine1; 
  108.       BYTE               InterruptIsUsed2; 
  109.       BYTE               InterruptLine2; 
  110.       BYTE               DMAIsUsed1; 
  111.       BYTE               DMALine1; 
  112.       BYTE               DMAIsUsed2; 
  113.       BYTE               DMALine2; 
  114.       BYTE               MicroChannelFlags; 
  115.       BYTE               Reserved5; 
  116.       BYTE               TextDescription[80]; 
  117. } SPXDriverReply; 
  118.  
  119. typedef struct SPXInfoRequestStructure 
  120.       SPXHeader          SPX; 
  121.       BYTE               ComponentPosition; 
  122.       BYTE               RequestNumber; 
  123.       BYTE               BridgeDriver; 
  124. } SPXInfoRequest; 
  125.  
  126. /* IPX/SPX Assembly Library prototypes */ 
  127. extern int IPXInitialize( void ); 
  128. extern int IPXOpenSocket(BYTE *socketNumber, BYTE socketType); 
  129. extern void IPXCloseSocket(WORD socketNumber); 
  130. extern int IPXGetLocalTarget(BYTE *networkAddress,BYTE *immediateAddress,WORD
  131. *transportTime); 
  132. extern void IPXSendPacket(ECB *eventControlBlock); 
  133. extern int IPXListenForPacket(ECB *eventControlBlock); 
  134. extern void IPXRelinquishControl(void); 
  135. extern unsigned int IPXGetIntervalMarker(void); 
  136. extern int SPXEstablishConnection( BYTE RetryCount, BYTE Watchdog, WORD *connectionID,
  137. ECB *ECBptr ); 
  138. extern void SPXListenForSequencedPacket( ECB *ECBptr ); 
  139. extern void SPXSendSequencedPacket( WORD ConnectionID, ECB *ECBptr ); 
  140. extern void SPXTerminateConnection( WORD ConnectionID, ECB *ECBptr ); 
  141.